/*    
    OpenMheg - A free MHEG-5 library
    Copyright (C) 2008 Dharmesh Malam

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Drawing;
using Core.Model.Groups;
using Parser;

namespace XMHEGDecoder.Builders
{
    public class SceneBuilder
    {
        public static void Build ( XmlElement node, Scene scene )
        {
            GroupBuilder.Build( node, scene );

            #region  Add our attributes
            XmlElement e;
            if ( ( e = node ["input-event-register"] ) != null )
                scene.InputEventRegister = DecodeUtils.ParseInt( e.InnerText );

            if ( ( e = node ["scene-coordinate-system"] ) != null )
                scene.SceneCoordinate = BuildSceneCoordinate( e );
            
            #endregion
        }


        private static Size BuildSceneCoordinate ( XmlElement node )
        {
            XmlElement xScene = node ["SceneCoordinateSystem.x-scene"];
            XmlElement yScene = node ["SceneCoordinateSystem.y-scene"];
            Size ret;

            if ( xScene != null && yScene != null )
            {
                ret = new Size( DecodeUtils.ParseInt( xScene.InnerText ), DecodeUtils.ParseInt( yScene.InnerText ) );

            }
            else
                throw new Exception( "Can't decode x/yscene" );

            return ret;
    
        }
    }
}

